package cn.lcsjsxy.yxz.day.Practice.Reflection;

import java.lang.reflect.Field;

//反射操作类的属性
public class Reflection_Operator_Class {
    public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {

        //获取 User 类的所有属性（包括私有、保护、默认），并打印属性名和访问修饰符。
        //创建 User 对象，给私有属性 password 赋值（值为 "123456"），并读取该属性的值打印。

        Class<?> userClass = User.class;
        //获取所有属性
        Field[] fields = userClass.getDeclaredFields();
        for (Field field : fields){
            System.out.println("属性名: " + field.getName() + ",修饰符: " + java.lang.reflect.Modifier.toString(field.getModifiers()));
        }

        //创建user对象
        User user = new User();
        user.username = "yang";

        //密码
        Field passwordField = userClass.getDeclaredField("password");
        passwordField.trySetAccessible();
        passwordField.set(user,"123456");
        String password = (String) passwordField.get(user);
        System.out.println("password: " + password);

    }
}
class User{
    //
    public String username;
    private String password;
    protected int age;
    String email;

}
